import axios from 'axios'; // 引入axios
import router from '@/router'
import { message } from 'ant-design-vue';
import {loading} from '@/utils/index'//公用方法


// const baseUrl = 'http://e2.ruiwuke.com/'

// // get
// export function get (url, data = {}) {
//   return new Promise((resolve, reject) => {
//     axios.get(baseUrl + url, data)
//       .then(response => {
//         resolve(response.data)
//       })
//       .catch(err => {
//         reject(err)
//       })
//   })
// }

// // post
// export function post (url, data = {}) {
//   return new Promise((resolve,reject) => {
//     axios.post(ConfigBaseURL + url, data)
//       .then(response => {
//         resolve(response.data)
//       }, err => {
//         reject(err)
//       })
//   })
// }


const excludeRedirectLogin = () => {
  let pathAry = ['/m_projectBoard']
  let in_path = pathAry.includes(router.currentRoute.path)
  if(in_path){
    message.error('页面错误，请重新进入')
  }
  return in_path;
}

axios.defaults.timeout = 10000;
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8;multipart/form-data';
// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 每次发送请求之前判断vuex中是否存在token
    // 如果存在，则统一在http请求的header都加上token，这样后台根据token判断你的登录情况
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = document.cookie.split('=')[1];
    token && (config.headers.AccessToken = token);
    // console.log('config')
    // console.log(config)
    return config;

  },
  error => {
    return Promise.error(error);
  })

// 响应拦截器
axios.interceptors.response.use(
  response => {
    console.log('response')
    console.log(response)
    if(response.data instanceof Blob){
      return Promise.resolve(response)
    }
    // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
    // 否则的话抛出错误
    if (response.status === 200) {
      console.log(response)
      let currentRoute = router.currentRoute
      if(response.data.status==401){
        if(!excludeRedirectLogin()) {
          setTimeout(() => {
            router.replace({
              path: '/login',
              query: {
                redirect: currentRoute.fullPath
              }
            });
          }, 1000);
        }
      }
      if(response.data.status===-10001){
        message.error('登录过期，请重新登录')
        localStorage.setItem('token','')
        setTimeout(() => {
          router.replace({
            path: '/login',
            query: {
              redirect: currentRoute.fullPath
            }
          });
        }, 1000);
      }
      return Promise.resolve(response);
    } else {
      return Promise.reject(response);
    }
  },
  error => {
    loading(false);
    message.error('请求失败')
    return false

    if (error.response.status) {
      console.log(router.currentRoute.fullPath);
      switch (error.response.status) {
        case 500:

          break;
        // 500: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 403:
          message.error('登录过期，请重新登录');
          // 跳转登录页面，并将要浏览的页面fullPath传过去，登录成功后跳转需要访问的页面
          setTimeout(() => {
            // router.replace({
            //   path: '/login',
            //   query: {
            //     redirect: router.currentRoute.fullPath
            //   }
            // });
          }, 1000);
          break;
        case 302:
          message.error('登录过期，请重新登录');
          // 跳转登录页面，并将要浏览的页面fullPath传过去，登录成功后跳转需要访问的页面
          setTimeout(() => {
            router.replace({
              path: '/login',
              query: {
                redirect: router.currentRoute.fullPath
              }
            });
          }, 1000);
          break;

        // 404请求不存在
        case 404:
          message.error('请求不存在')
          break;
        // 其他错误，直接抛出错误提示
        default: message.error(error.response.data.message);
      }
      return Promise.reject(error.response);
    }
  }
);
